﻿' ----------------------------------------------------------------------------------
' Microsoft Developer & Platform Evangelism
' 
' Copyright (c) Microsoft Corporation. All rights reserved.
' 
' THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, 
' EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES 
' OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
' ----------------------------------------------------------------------------------
' The example companies, organizations, products, domain names,
' e-mail addresses, logos, people, places, and events depicted
' herein are fictitious.  No association with any real company,
' organization, product, domain name, email address, logo, person,
' places, or events is intended or should be inferred.
' ----------------------------------------------------------------------------------

Imports Microsoft.Samples.WindowsPhoneCloud.Web.Models
Imports System.Linq
Imports System.Collections.Generic
Imports System

Namespace Infrastructure

    <CLSCompliant(False)> _
    Public Interface IPushUserEndpointsRepository
        Sub AddPushUserEndpoint(ByVal pushUserEndpoint As PushUserEndpoint)

        Sub UpdatePushUserEndpoint(ByVal pushUserEndpoint As PushUserEndpoint)

        Sub RemovePushUserEndpoint(ByVal pushUserEndpoint As PushUserEndpoint)

        Function GetAllPushUsers() As IEnumerable(Of String)

        Function GetPushUsersByName(ByVal userId As String) As IEnumerable(Of PushUserEndpoint)

        Function GetPushUserByApplicationAndDevice(ByVal applicationId As String, ByVal deviceId As String) As PushUserEndpoint

#If SQLONLY Then
		Sub AddQueuedPushNotification(ByVal queuedPushNotification As QueuedPushNotification)

		Sub DeleteQueuedMessage(ByVal message As QueuedPushNotification)

		Function GetPushUserEndpointByChannel(ByVal channelUri As Uri) As PushUserEndpoint

		Function GetQueuedPushNotificationsByChannel(ByVal channelUri As Uri) As IEnumerable(Of QueuedPushNotification)
#End If
    End Interface
End Namespace